#!/bin/bash

###########################################
#安装 rules_cc	commit 7cf3cefd652008d0a64a419c34c13bdca6c8f178
###########################################

#安装基础依赖
yum install -y gcc gcc-c++ make bazel
#安装java11
yum install -y java-11-openjdk java-11-openjdk-devel
#查看可用 Java 版本
sudo alternatives --config java
#选择 Java 11（输入对应编号，如 2）
sudo alternatives --config java 2
#验证 Java 版本（应输出 11.x.x）
java --version
#加载环境变量
export JAVA_HOME=$(find /usr/lib/jvm/ -maxdepth 1 -type d -name "java-11*" | head -n 1)

#JAVA_HOME=$(find /usr/lib/jvm/ -maxdepth 1 -type d -name "java-11*" | head -n 1)
#echo $JAVA_HOME
#export JAVA_HOME
#bazel info java-home

#安装
###########################################
#1.获取 rules_java 源码并切换版本
cd /home
git clone https://github.com/bazelbuild/rules_java.git
cd rules_java
git checkout 7cf3cef
#2.查看当前提交信息（确认是目标版本）
git log -1

#############################################
#运行验证
#############################################
#配置 Bazel 项目引用本地源
#1. 创建 Bazel 项目目录
mkdir -p /home/bazel_java_project && cd /home/bazel_java_project
#2. 编写 WORKSPACE 文件（引用本地 rules_java 源码）
cat > WORKSPACE <<EOF
local_repository(
    name = "rules_java",
    path = "/home/rules_java",  # 替换为实际源码路径（用户当前路径为 /home/rules_java）
)
EOF

#3. 编写示例 BUILD 文件
mkdir -p src/main/java/com/example && cd src/main/java/com/example
cat > BUILD <<EOF
load("@rules_java//java:defs.bzl", "java_library")  # 使用 defs.bzl（适配缺少 java_library.bzl 的版本）

java_library(
    name = "hello_lib",
    srcs = ["Hello.java"],
    visibility = ["//visibility:public"],
)
EOF

# 创建 Java 源文件
cat > Hello.java <<EOF
package com.example;

public class Hello {
    public static String greet() {
        return "Hello from rules_java!";
    }
}
EOF

#验证目标版本规则可用性
cd /home/bazel_java_project
#1. 构建示例库
bazel build //src/main/java/com/example:hello_lib
#2. 查看构建产物（应存在 JAR 文件）
bazel info bazel-bin  # 获取输出路径
ls -l bazel-bin/src/main/java/com/example # 应存在 JAR 文件


